/**
 * 文件名：@RedirectView.java <br/>
 * 包名：cn.efunbox.afw.web.mvc.springmvc.view <br/>
 * 项目名：afw-mvc-web <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.web.mvc.springmvc.view;

import java.util.Collections;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.efunbox.afw.web.util.AfwWebConstant;

/**
 * 类名：RedirectView  <br />
 *
 * 功能：
 *
 * @author xtwin <br />
 * 创建时间：2015年12月3日 下午6:21:39  <br />
 * @version 2015年12月3日
 */
public class RedirectView extends org.springframework.web.servlet.view.RedirectView {

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月3日 下午6:21:58<br/>
	 * 
	 * @param targetUrl
	 * @param model
	 * @param request
	 * @param response
	 * @return <br/>
	 * @see org.springframework.web.servlet.view.RedirectView#updateTargetUrl(java.lang.String, java.util.Map, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected String updateTargetUrl(String targetUrl, Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
		String resource = (String) model.get(AfwWebConstant.KEY_RESULT_RESOURCE);
		
		if (logger.isDebugEnabled()) {
			logger.debug("the resource is : " + resource);
		}
		
		String url = super.updateTargetUrl(targetUrl, model, request, response);
		
		int index = url.indexOf('?');
		if (index == -1) {
			url = resource + "?" + url;
		} else {
			url = new StringBuilder(url.substring(0, index)).append("/").append(resource).append(url.substring(index)).toString();
		}
		
		if (url.endsWith("?")) {
			url = url.substring(0, url.length() - 1);
		}
		
		/*if (StringUtils.hasText(url)) {
			try {
				url = replaceUriTemplateVariables(targetUrl.toString(), model, new HashMap<String, String>(), WebUtils.DEFAULT_CHARACTER_ENCODING).toString();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}*/
		
		if (logger.isDebugEnabled()) {
			logger.debug("the url is : " + url);
		}
		
		return url;
	}
	
	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月3日 下午6:23:30<br/>
	 * 
	 * @param model
	 * @return <br/>
	 * @see org.springframework.web.servlet.view.RedirectView#queryProperties(java.util.Map)
	 */
	@Override
	protected Map<String, Object> queryProperties(Map<String, Object> model) {
		return Collections.emptyMap();
	}
}
